package jsu.ljy.lostandfind.service;

import java.util.List;

import jsu.ljy.lostandfind.model.Comment;

/**
 * 评论服务接口
 * 
 * <p>定义了评论相关的业务逻辑操作接口，包括评论的发表、修改、删除等功能。</p>
 * 
 * @author 罗嘉毅
 * @version 1.0
 * @since 2024-03-21
 */
public interface CommentService {
    /**
     * 发表评论
     * 
     * @param comment 评论信息
     * @throws IllegalArgumentException 当评论内容为空或超过长度限制时抛出
     */
    void publishComment(Comment comment);

    /**
     * 更新评论
     * 
     * @param comment 更新的评论信息
     * @throws IllegalArgumentException 当评论ID为空或评论不存在时抛出
     */
    void updateComment(Comment comment);

    /**
     * 删除评论
     * 
     * @param id 评论ID
     * @throws IllegalArgumentException 当ID为空或评论不存在时抛出
     */
    void deleteComment(Long id);

    /**
     * 根据ID查询评论
     * 
     * @param id 评论ID
     * @return 评论信息，不存在时返回null
     */
    Comment getCommentById(Long id);

    /**
     * 查询物品的所有评论
     * 
     * @param itemId 物品ID
     * @return 评论列表
     */
    List<Comment> getCommentsByItemId(Long itemId);

    /**
     * 查询用户的所有评论
     * 
     * @param userId 用户ID
     * @return 评论列表
     */
    List<Comment> getCommentsByUserId(Long userId);
} 